#!/bin/sh
# ----------------------------------------------------------------------------
# 自动更新代码并部署脚本
#
# 请先在上级目录创建 configure/$PROJECT_NAME 目录，将需要覆盖的配置文件编写好并放入后再执行这个脚本
#
# 注意：如果修改了此脚本，必须先手动 pull 然后才能执行这个脚本，不能让脚本自动 pull
#
# # TODO
# # * 增加不自动 pull 代码的开关
# # * 这个文件改变后可自动重新执行改变后的文件
# ----------------------------------------------------------------------------

# 跳到当前目录
cd `dirname "$0"`

# ### 配置 ###
# 项目名
PROJECT_NAME="carpool-service"
# 远端分支
GIT_BRANCH="master"

# ### 自动计算的变量 ###
SOURCE_DIR=$(pwd)
BASE_DIR="$(readlink -f $SOURCE_DIR/..)"
RUNTIME_DIR="$BASE_DIR/runtime/$PROJECT_NAME"
CONFIGURE_DIR="$BASE_DIR/configure/$PROJECT_NAME"

# ### 更新代码 ###
git checkout ${GIT_BRANCH}
git pull

# ### 生成文档 ###
apidoc -i src/ -o ../doc/

# ### 编译 ###
# copy 配置文件
cp -fpv $CONFIGURE_DIR/* "$SOURCE_DIR/src/main/resources"

# 编译代码
./gradlew clean bootJar

# ### 重启服务 ###
# 创建运行目录
mkdir -p ${RUNTIME_DIR}

# 复制重启脚本到运行目录
cp -fpv "$SOURCE_DIR/restart" ${RUNTIME_DIR}
chmod u+x "$RUNTIME_DIR/restart"

# 复制编译结果到运行目录
cd "$SOURCE_DIR/build/libs"
find . -name "$PROJECT_NAME-*.*.*-*.jar" | xargs -i cp -fpv {} "$RUNTIME_DIR/$PROJECT_NAME.jar"

# 调用重启脚本
${RUNTIME_DIR}/restart ${PROJECT_NAME}
